package org.wu.framework.bean.definition;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.List;

/**
 * 定义bean
 */
public interface BeanDefinition {

    /**
     * bean class
     */
    Class<?> getBeanClass();

    /**
     * 构造方法
     */
    Constructor<?> getConstructor();

    /**
     * 构造方法参数
     */
    Class<?>[] getParameterTypes();

    /**
     * 注入字段
     */
    List<Field> getInjectingFields();

    /**
     * 通过方法注入
     */
    List<Method> getInjectingMethods();

    /**
     * 初始化方法
     */
    List<Method> getInitMethods();

    Class<?>[] getDependsOn();


}
